"""
设计一个名为的自定义列表类，实现以下功能：
1.类初始化时接受一个列表作为参数，并将其存储为对象的属性。
2.实现 __len__ 魔法方法，使得 len() 函数能够返回该列表的长度。
3.实现 __getitem__ 和 __setitem__ 魔法方法，使得可以通过索引访问和修改列表中的元素。
4.实现 append() 方法，能够向列表尾部添加新的元素。
5.实现 __str__ 魔法方法，使得 print() 函数能够打印出该列表的内容。

要求：
类的实例化参数为一个普通的Python列表。
所有的方法和魔法方法都需要正确地处理异常和边界条件，如索引超出范围等情况。
"""


class MyList(object):
    def __init__(self, param: list):
        self._list = param

    def __len__(self):
        return len(self._list)

    def __getitem__(self, index: int):
        return self._list[index]

    def __setitem__(self, key, value):
        self._list[key] = value

    def append(self, val):
        self._list.append(val)

    def __str__(self):
        return str(self._list)


if __name__ == '__main__':
    o_list = MyList([1, 3, 5, 7])
    print(o_list.__dict__)